Github Actions实现Hexo自动化部署 |
您所在的位置:网站首页 › hexo admin自动化部署unknown › Github Actions实现Hexo自动化部署 |
本文介绍了如何使用GitHub Actions实现Hexo自动化部署,并指出了一些现有YAML代码所引用的脚本比较老导致报错的问题。 Hexo是一个快速、简单且强大的静态博客框架,而GitHub Actions则是一项功能强大的CI/CD工具,可以自动化地执行软件开发工作流程,用于自动构建、测试和部署代码,从而加快软件开发周期。 GitHub Actions使用YAML脚本语言,一种轻量级的标记语言,语法简单,相比JSON更加简介,可以轻松地编写和维护自动化工作流程。 1. SSH秘钥我的Hexo分2个Git仓库,源码为私库 21ido.com,发布到 GitHub Pages为公开库 think2cat.github.io 因为是从源码私库push到Pages公开库,此时需要在公开库设置公钥 1.1 生成秘钥执行下面代码,其中邮箱替换成自己的 ssh-keygen -t rsa -b 4096 -C "[email protected]" -f hexo -N ""生成2个文件,hexo 和 hexo.pub 1.2 设置公钥用记事本打开 hexo.pub,全选复制后到GitHub Pages库 Settings > Deploy keys > Add deploy key 把刚刚复制的粘贴进去,Title可以随便起,有多个公钥时可以区分,只有一个的话就无所谓了 然后记得把下面的 Allow write access勾上 接着记事本打开hexo,全选复制,私钥会长很多,到源码库 Settings > Secrets > Actions > New repository secret Name相当于变量名,可以自己起个名字,但要跟后面的yaml文件对应,系统默认大写,就算输入小写也会自动变成大写 确定后这步就完成了,等于从源码库push到页面库时,公钥和私钥作为检验权限使用,而把私钥加在这里,是为了避免在源码写秘钥容易泄露,而且Actions的日志遇到 Secret 里的变量时,会自动处理成 ***,而不是明文,也能避免私钥泄露 2. 创建工作流因为写hexo是push到源码库,然后由源码库编译生成pages,再把生成的页面push到Pages库,所以工作流是建在源码库 点击 Actions > New workflow 也可以直接在Git库根目录新建 .github \ workflows 目录,然后在 workflows 目录再新建 yml 文件,文件名随意,新建的工作流都会在Actions下显示 工作流分为几步骤 checkout code 配置node环境 安装依赖包 安装hexo hexo生成页面 发布到GitHub Pages完整的YML脚本如下 name: Deployon: [push]jobs: build: runs-on: ubuntu-latest name: Deploy blog steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '16' cache: 'npm' - name: Install Dependencies run: npm ci - name: install hexo... run: | npm install hexo-cli -g - name: hexo generate public files... run: | hexo clean hexo g - name: Deploy uses: peaceiris/actions-gh-pages@v3 with: deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} external_repository: think2cat/think2cat.github.io publish_branch: master publish_dir: ./public 3. 报错解决Please update the following actions to use Node.js 16 最开始用的是网上找的脚本 actions/checkout@v1 和 actions/setup-node@v2 版本为12,于是改为 actions/checkout@v3 和 actions/setup-node@v3,并配上 16 版本属性 Error: pngquant failed to build, make sure that libpng-dev is installed 使用部署脚本为 sma11black/[email protected] 错误原因未知,可能是node版本兼容问题,改为全局安装 hexo + build Please make sure you have the correct access rights and the repository exists. Error: Action failed with “The process ‘/usr/bin/git’ failed with exit code 128” Git库权限问题,确保SSH公钥和私钥是一对,且对应的库没搞错 脚本依赖包没有考虑做缓存,可以自己试试用 actions/cache 4. 附录:阮一峰YAML教程 www.ruanyifeng.com/blog/2016/0… Github Actions docs.github.com/zh/actions/… actions-gh-pages github.com/peaceiris/a… |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |